package com.coolbi.onsupai.core.mapper;

import java.util.List;
import java.util.Map;

/**
 * @Description Base Mapper Mapper基类
 * @author for2cold
 * @codeDate 2012-6-19 上午09:42:15
 *
 * @param <T>
 */
public interface BaseMapper<T> {

	/**
	 * 持久化对象
	 * @param obj 要持久化的对象
	 * @return
	 */
	int save(T obj);
	
	/**
	 * 根据ID删除对象
	 * @param id 对象ID
	 * @return
	 */
	int delete(long id);
	 
	/**
	 * 更新对象
	 * @param obj 要更新的对象
	 * @return
	 */
	int update(T obj);
	
	/**
	 * 根据ID获取对象
	 * @param id 对象ID
	 * @return
	 */
	T get(long id);
	
	/**
	 * 获取所有对象集合
	 * @return
	 */
	List<T> list();
	
	/**
	 * 分页获取所有对象集合
	 * @param parameter 参数集合
	 * @return
	 */
	List<T> listByPage(Map<String, Object> parameter);

	/**
	 * 根据参数获取对象集合
	 * @param parameter 参数集合
	 * @return
	 */
	List<T> listByParameter(Map<String, Object> parameter);
	
	/**
	 * 根据参数分页获取对象集合
	 * @param parameter 参数集合
	 * @return
	 */
	List<T> listByParameterPage(Map<String, Object> parameter);
	
	/**
	 * 根据参数分页、模糊获取对象集合
	 * @param paramter 参数集合
	 * @return
	 */
	List<T> search(Map<String, Object> parameter);
	
	/**
	 * 获取记录总条数
	 * @return
	 */
	int count();
	
	/**
	 * 根据参数获取记录条数
	 * @param paramter 参数集合
	 * @return
	 */
	int countByParameter(Map<String, Object> parameter);
	
	/**
	 * 根据关键字模糊获取记录条数
	 * @param paramter 关键字集合
	 * @return
	 */
	int countByKeyWord(Map<String, Object> parameter);
}
